package com.eric.servicestudy;

import android.app.Service;
import android.content.Intent;
import android.os.Binder;
import android.os.IBinder;
import android.util.Log;

import androidx.annotation.Nullable;

import java.math.BigInteger;


public class ServiceOnbind extends Service {

    public static int count;
    private final String TAG = "bind 的服务";
    private boolean quit = false;

    //定义 onBuild() 方法 返回的对象  IBinder
    private MyBinder binder = new MyBinder();

    // 定义 内部类 MyBinder 继承自 Binder
    static class MyBinder extends Binder {
        public int getCount() {
            return count;
            //return 1;
        }
    }

    // 必须实现的方法,  绑定该 Service 时会调用的方法 onBind
    @Nullable
    @Override
    public IBinder onBind(Intent intent) {
        Log.i(TAG, "onBind 方法调用");
        return binder;
    }


    /*  service 创建的时候 回调 */

    @Override
    public void onCreate() {
        super.onCreate();
        Log.i(TAG, "onCreate 方法调用");

        //另外启动一个 新的 thread 动态的修改 count 的值
        MyThread mthread = new MyThread();
        mthread.start();
    }

    // 先笨拙的用 继承Thread 的方法使用 java thread
    class MyThread extends Thread {
        // constructor 构造函数
        public MyThread() {
        }

        @Override
        public void run() {
            System.out.println("count++ 线程启动");
            while (false == quit) {
                try {
                    Thread.sleep(10);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
                count++;  // a++ 是先用后+
            }
        }
    }


    /* service 断开连接时 回调 */

    @Override
    public boolean onUnbind(Intent intent) {
        Log.i(TAG, "onUnbind 调用");
        return true;
    }

    /* service 被关闭之前 调用 */

    @Override
    public void onDestroy() {
        super.onDestroy();
        this.quit = true;
        Log.i(TAG, "onDestroyed 方法调用!");
    }

    /* service 被重新绑定调用 */

    @Override
    public void onRebind(Intent intent) {
        Log.i(TAG, "onRebind 方法调用!");
        super.onRebind(intent);
    }

    /*
        同样的需要去 Manifest 中注册 该 服务 ServiceOnbind

        <service android:name=".ServiceOnbind">
            <intent-filter>
                <action android:name="com.zhang.BIND_SERVICE"/>
            </intent-filter>
        </service>

     */
}